#ifndef RUNCMD_H
#define RUNCMD_H
#include <QObject>
#include <QDebug>
#include <QProcess>
#include <signal.h>
#include <QDir>
class runcmd : public QObject{
    Q_OBJECT
public:
    runcmd(QObject *parent = nullptr);
    bool isRunning() const { return m_process->state() == QProcess::Running; }
    void forceStop() { m_process->kill(); }  // 新增强制终止方法
public slots:
    void runProcess(QString str);
    void stopProcess();
signals:
    void outputReceived(const QString& output);   // 标准输出信号
    void errorReceived(const QString& error);     // 错误输出信号
    void finished(int exitCode);                  // 命令完成信号
private:
    QProcess* m_process;  // 用于执行外部命令的进程对象
    qint64 m_childPid = -1;  // 存储实际子进程PID
    void setupEnvironment();  // 新增环境设置方法
    void setupConnections();
    void terminateProcess(bool forceKill);
};

#endif // RUNCMD_H
